package org.jerrymouse.jsa4j.vfs;

import java.util.List;

/**
 * 文件接口，包括文件夹
 * 
 * @author yankai
 * 
 */
public interface FileObject {
	/**
	 * return 删除成功与否。 如果删除的是非空文件夹，也要毫不留情
	 */
	boolean delete();

	/**
	 * @return 是否在“文件系统”中存在
	 */
	boolean exists();

	/**
	 * 如果是文件夹，则True，否则False
	 */
	boolean isDirectory();

	/**
	 * 如果是文件(不可以是文件夹)，则True，否则False
	 */
	boolean isFile();

	/**
	 * 生成文件夹
	 */
	FileObject mkDir();

	/**
	 * 获得文件名
	 */
	String getName();

	/**
	 * 获得路径，如果可以是绝对路径就用绝对路径，否则使用相对路径
	 */
	String getPath();

	/**
	 * 获得文件内容
	 */
	byte[] getContent();

	/**
	 * 获得文件内容，编码为UTF-8
	 */
	String getStringContent();

	/**
	 * 写文件内容，append为True时为追加内容
	 */
	FileObject write(byte[] content, boolean append);

	/**
	 * 覆盖文件内容
	 */
	FileObject write(byte[] content);

	/**
	 * 写文件内容，append为True时为追加内容，编码为UTF-8
	 */
	FileObject write(String content, boolean append);

	/**
	 * 覆盖文件内容，编码为UTF-8
	 */
	FileObject write(String content);

	/**
	 * 返回文件夹的Children。 =
	 */
	List<FileObject> getChildren();

}
